// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.SQLAlterTableItem;
// import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
// import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
#pragma once
#include "../../../../../sql/dialect/mysql/ast/MySqlObjectImpl.h"
#include "../../../../../sql/ast/statement/SQLAlterTableItem.h"

class SQLName;
class SQLColumnDefinition;
class MySqlASTVisitor;

class MySqlAlterTableChangeColumn : public MySqlObjectImpl, virtual public SQLAlterTableItem
{
public:
    SQLName_ptr columnName;

    SQLColumnDefinition_ptr newColumnDefinition;

    BOOL_ptr first;

    SQLName_ptr firstColumn;
    SQLName_ptr afterColumn;

  SHAREDOBJECT(MySqlAlterTableChangeColumn);
    // @Override
    void accept0(MySqlASTVisitor_ptr visitor);

    SQLName_ptr getFirstColumn();

    void setFirstColumn(SQLName_ptr firstColumn);

    SQLName_ptr getAfterColumn();

    void setAfterColumn(SQLName_ptr afterColumn);

    SQLName_ptr getColumnName();

    void setColumnName(SQLName_ptr columnName);

    SQLColumnDefinition_ptr getNewColumnDefinition();

    void setNewColumnDefinition(SQLColumnDefinition_ptr newColumnDefinition);

    BOOL_ptr isFirst();

    void setFirst(BOOL_ptr first);
};
